package com.jiazhong.basic.pack0315.demo;

import com.jiazhong.basic.pack0315.demo.Student;

import java.util.Arrays;
import java.util.Iterator;
import java.util.Set;
import java.util.TreeSet;

// Collection--->Set--->TreeSet
public class DemoC {
    // 1. 如何产生对象
    private static void a(){
        TreeSet<String> set1 = new TreeSet<>();
        TreeSet<String> set2 = new TreeSet<>(set1);
        TreeSet<Integer> set3 = new TreeSet<>();
    }
    // 2. 如何对集合进行CRUD(存放、获取、修改、删除)
    private static void b(){
        // 自动排序
        TreeSet<Integer> set = new TreeSet<>();
        set.add(87);
        set.add(66);
        set.add(13);
        set.add(29);
        set.add(46);
        set.add(58);
        set.add(23);
        set.add(87);
        set.add(19);
        set.add(54);
        System.out.println(set);
        set.remove(99);
        set.remove(87);
        System.out.println(set);
    }
    // 3. 其他方法
    private static void c(){
        TreeSet<Integer> set = new TreeSet<>();
        set.add(87);
        set.add(66);
        set.add(13);
        set.add(29);
        set.add(46);
        set.add(58);
        set.add(23);
        set.add(87);
        set.add(19);
        set.add(54);
        System.out.println(set);
        // 截取 从46---98之间的集合
        Set<Integer> set2 = set.subSet(46,98);
        System.out.println(set2);
        int size = set.size();
        System.out.println(size);
        boolean empty = set.isEmpty();
        System.out.println(empty);
        Object[] array = set.toArray();
        System.out.println(Arrays.toString(array));
    }
    // 4. 循环集合
    private static void d(){
        TreeSet<Integer> set = new TreeSet<>();
        set.add(87);
        set.add(66);
        set.add(13);
        set.add(29);
        set.add(46);
        set.add(58);
        set.add(23);
        set.add(87);
        set.add(19);
        set.add(54);
        for (int e : set) {
            System.out.print(e + "\t");
        }
        System.out.println();
        Iterator<Integer> iterator = set.iterator();
        while (iterator.hasNext()) {
            int e = iterator.next();
            System.out.print(e + "\t");
        }
        System.out.println();
        set.forEach(e -> System.out.print(e + "\t"));
    }
    // 5. 如何查找
    private static void e(){
        TreeSet<Integer> set = new TreeSet<>();
        set.add(87);
        set.add(66);
        set.add(13);
        set.add(29);
        set.add(46);
        set.add(58);
        set.add(23);
        set.add(87);
        set.add(19);
        set.add(54);
        System.out.println(set);
        boolean b1 = set.contains(34);
        boolean b2 = set.contains(23);
        System.out.println(b1);
        System.out.println(b2);
    }
    // 6. 复杂类型查找和排序
    private static void f(){
        // 强制要求范型类必须实现Comparable
        TreeSet<Student> set = new TreeSet<>();
        Student s1 = new Student(1,"张三1",23);
        Student s2 = new Student(2,"张三2",34);
        Student s3 = new Student(3,"张三3",23);
        Student s4 = new Student(4,"张三4",25);
        Student s5 = new Student(1,"张三1",23);
        Student s6 = new Student(8,"张三8",23);
        set.add(s1);
        set.add(s2);
        set.add(s3);
        set.add(s4);
        System.out.println(set);
        boolean b1 = set.contains(s5);
        boolean b2 = set.contains(s6);
        System.out.println(b1);
        System.out.println(b2);

    }
    public static void main(String[] args) {
        f();
    }
}
